package edu.algo3.algoThief.dao;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.jdom2.Element;

public class PistasLadron extends repositorioXML {

	// ********* Variables de instancia **********
	
	private static String nombreDocumentoXML = "datos/pistas/xml/listaPistasLadron.xml";
	
	// ********* Constructores **********
	
	protected PistasLadron()
	{
		
	}
	
	// ********* Getters **********
	
	protected static String getPista(String nivelDificultad, String ladronApellido)
	{
		ArrayList<String> datosLadron1 = new ArrayList<String>();
		ArrayList<String> listaDePistaPorLadron = new ArrayList<String>();
		String pista = new String();
		
		datosLadron1 = DatosSospechosos.getDatosSobre(ladronApellido);
		
		parseDocumento(nombreDocumentoXML);
		listaDePistaPorLadron = listaDePistaPorLadron(datosLadron1, nivelDificultad);
		pista = sacarPistaAleatoria (listaDePistaPorLadron);
		
		return (pista);
	}
	
	// ********* Setters **********
	
	// ********* Metodos de instancia **********
	
	private static ArrayList<String> listaDePistaPorLadron(ArrayList<String> datosLadron, String nivelDificultad)
	{
		ArrayList<String> listaDePistas = new ArrayList<String>();
		List<Element> listaNivelesDificultad = racine.getChildren("dificultad");
		Iterator<Element> i1 = listaNivelesDificultad.iterator();
		while(i1.hasNext())
		{
		     Element dificultad = (Element)i1.next();
		     if(dificultad.getAttribute("nivelDificultad").getValue().equals(nivelDificultad))
		     {
		    	// no se puede hacer un switch con stringd en esa version de JDE
		    	 
		    	 //---------------------------------------------
		    	 
		    	 List<Element> listHobbies = dificultad.getChildren("hobby");
		    	 Iterator<Element> i2 = listHobbies.iterator();
		    	 while(i2.hasNext())
		    	 {
		    		 Element hobby = (Element)i2.next();
		    		 if(hobby.getAttribute("elHobby").getValue().equals(datosLadron.get(3)))
		    		 {
		    			 List<Element> listPistas = hobby.getChildren("pista");
				    	 Iterator<Element> i3 = listPistas.iterator();
				    	 while(i3.hasNext())
				    	 {
				    		 Element pista = (Element)i3.next();
				    		 listaDePistas.add(pista.getText());
				    	 }
		    		 }
		    	  }

		    	 //---------------------------------------------
		    	 
		    	 List<Element> listCabellos = dificultad.getChildren("cabello");
		    	 Iterator<Element> i4 = listCabellos.iterator();
		    	 while(i4.hasNext())
		    	 {
		    		 Element cabello = (Element)i4.next();
		    		 if(cabello.getAttribute("elCabello").getValue().equals(datosLadron.get(4)))
		    		 {
		    			 List<Element> listPistas = cabello.getChildren("pista");
				    	 Iterator<Element> i5 = listPistas.iterator();
				    	 while(i5.hasNext())
				    	 {
				    		 Element pista = (Element)i5.next();
				    		 listaDePistas.add(pista.getText());
				    		 
				    	 }
		    		 }
		    	  }

		    	 //---------------------------------------------
		    	 
		    	 List<Element> listSenias = dificultad.getChildren("senia");
		    	 Iterator<Element> i6 = listSenias.iterator();
		    	 while(i6.hasNext())
		    	 {
		    		 Element senia = (Element)i6.next();
		    		 if(senia.getAttribute("laSenia").getValue().equals(datosLadron.get(5)))
		    		 {
		    			 List<Element> listPistas = senia.getChildren("pista");
				    	 Iterator<Element> i7 = listPistas.iterator();
				    	 while(i7.hasNext())
				    	 {
				    		 Element pista = (Element)i7.next();
				    		 listaDePistas.add(pista.getText());
				    	 }
		    		 }
		    	  }

		    	 //---------------------------------------------
		    	 
		    	 List<Element> listVehiculos = dificultad.getChildren("vehiculo");
		    	 Iterator<Element> i8 = listVehiculos.iterator();
		    	 while(i8.hasNext())
		    	 {
		    		 Element vehiculo = (Element)i8.next();
		    		 if(vehiculo.getAttribute("elVehiculo").getValue().equals(datosLadron.get(6)))
		    		 {
		    			 List<Element> listPistas = vehiculo.getChildren("pista");
				    	 Iterator<Element> i9 = listPistas.iterator();
				    	 while(i9.hasNext())
				    	 {
				    		 Element pista = (Element)i9.next();
				    		 listaDePistas.add(pista.getText());
				    	 }
		    		 }
		    	  }
		      }
		}
		
		return listaDePistas;
		
	}
	
}
